﻿package net.sapfree.core.base;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;

/**
 * 
 * <pre>
 * 功能描述：基础异常类
 * 作者：xingjin
 * 创建日期：Sep 4, 2007 2:23:31 PM
 * </pre>
 */
public class BaseException extends RuntimeException {
	//    异常代码
	private String errorCode;
	//	  异常对象
	private Exception exception;
	//    异常附带的错误描述对象
	private Object errorObject;
	/**
	 * 
	 * <pre>
	 * 方法名称：public BaseException() 
	 * 功能描述：无参构造函数
	 * 参数：
	 * </pre>
	 */
	public BaseException() {
		super();
	}
	/**
	 * 
	 * <pre>
	 * 方法名称：public BaseException(Exception e)
	 * 功能描述：
	 * 参数：Exception e 异常类
	 * </pre>
	 */
	public BaseException(Exception e){
		this.exception=e;
	}
    /**
     * 
     * <pre>
     * 方法名称：public BaseException(String errorCode,Exception e)
     * 功能描述：构造函数
     * 参数：String errorCode,
     *      Exception e
     * </pre>
     */
	public BaseException(String errorCode,Exception e){
		this.errorCode=errorCode;
		this.exception=e;
	}
	
    public BaseException(String errorCode,Exception e,Object obj){
    	this.errorCode=errorCode;
		this.exception=e;
		this.errorObject=obj;
    }
	
	/**
	 * 返回：属性errorCode.
	 */
	public String getErrorCode() {
		return errorCode;
	}

	/**
	 * 参数：参数errorCode设置属性errorCode
	 */
	public void setErrorCode(String errorCode) {
		this.errorCode = errorCode;
	}

	/**
	 * 返回：属性exception.
	 */
	public Exception getException() {
		return exception;
	}

	/**
	 * 参数：参数exception设置属性exception
	 */
	public void setException(Exception exception) {
		this.exception = exception;
	}

	/**
	 * 返回：属性errorObject.
	 */
	public Object getErrorObject() {
		return errorObject;
	}

	/**
	 * 参数：参数errorObject设置属性errorObject
	 */
	public void setErrorObject(Object errorObject) {
		this.errorObject = errorObject;
	}
	/**
	 * 
	 * <pre>
	 * 方法名称：public String getMessage()
	 * 功能描述：获取异常信息的简短信息
	 * 引用描述：
	 * 参数：无
	 * 返回：异常的简短信息
	 * </pre>
	 */
	public String getMessage(){
		return exception.getMessage();
	}
	/**
	 * 
	 * <pre>
	 * 方法名称：public String getDetail()
	 * 功能描述：获取异常的详细跟踪信息
	 * 引用描述：
	 * 参数：无
	 * 返回：异常的详细跟踪信息
	 * </pre>
	 */
	public String getDetail(){
		//创建字符串流
		StringWriter sw = new StringWriter();
		//将字符串流绑定到文本输出流
		PrintWriter pw = new PrintWriter( sw );
		//将日志详细信息输出到文本输出流中
		exception.printStackTrace( pw );
		pw.flush();
		sw.flush();
		//获取日志详细信息
		String detail = sw.toString();
		try{
			sw.close();
		}catch( IOException e){
			e.printStackTrace();
		}
		pw.close();
		return detail;
	}
}
